package com.h5ve.toolkit.listener;

import lombok.extern.slf4j.Slf4j;
import org.anyline.data.listener.DMListener;
import org.anyline.data.run.Run;
import org.anyline.data.runtime.DataRuntime;
import org.anyline.metadata.ACTION;
import org.anyline.metadata.Table;
import org.springframework.stereotype.Component;

import java.util.List;

@Slf4j
@Component
public class TriggerDmListener implements DMListener {

    /**
     * 创建插入相关的SQL之前调用<br/> 要修改插入内容可以在这一步实现,注意不是在beforeInsert
     *
     * @param runtime 包含数据源(key)、适配器、JDBCTemplate、dao
     * @param random  用来标记同一组SQL、执行结构、参数等
     * @param dest    表
     * @param obj     实体
     * @param columns 需要抛入的列 如果不指定  则根据实体属性解析
     * @return 如果返回false 则中断执行
     */

    @Override
    public ACTION.SWITCH afterInsert(DataRuntime runtime, String random, Run run, long count, Table dest, Object obj, List<String> columns, boolean success, long qty, long millis) {
        log.info("afterInsert");
        return DMListener.super.afterInsert(runtime, random, run, count, dest, obj, columns, success, qty, millis);
    }

    /**
     * 创建插入相关的SQL之前调用<br/> 要修改插入内容可以在这一步实现,afterUpdate
     *
     * @param runtime 包含数据源(key)、适配器、JDBCTemplate、dao
     * @param random  用来标记同一组SQL、执行结构、参数等
     * @param dest    表
     * @param obj     实体
     * @param columns 需要抛入的列 如果不指定  则根据实体属性解析
     * @return 如果返回false 则中断执行
     */
    @Override
    public ACTION.SWITCH afterUpdate(DataRuntime runtime, String random, Run run, long count, Table dest, Object obj, List<String> columns, boolean success, long qty, long millis) {
        log.info("afterUpdate");
        return DMListener.super.afterUpdate(runtime, random, run, count, dest, obj, columns, success, qty, millis);
    }
}
